package com.ctshk.rpc.ship.service;


import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.ship.dto.ShipProductDetailDTO2;
import com.ctshk.rpc.ship.dto.ShipProductPageDTO;
import com.ctshk.rpc.ship.dto.ShipProductSaleStrategyDTO;
import com.ctshk.rpc.ship.dto.ShipProductSaleStrategyDTO2;
import com.ctshk.rpc.ship.req.*;

import java.text.ParseException;
import java.util.List;

/**
 * <p>
 * 船票销售加幅策略 服务类
 * </p>
 *
 * @author 刘蕾
 * @since 2021-03-10
 */
public interface IShipProductSaleStrategyService  {

    /**
     * 产品中心-分页查询船票列表
     * @param shipProductPageReq
     * @param currentUser
     * @return
     */
    PageResponse<ShipProductPageDTO> queryList(ShipProductPageReq shipProductPageReq, TokenUser currentUser);

    /**
     * 船票上架加幅设置-新增或修改
     * @param reqList
     * @param user
     */
    Result saveShipProductSaleStrategy(List<ShipProductSaleStrategyReq> reqList, TokenUser user);


    /**
     * 批量售价管理
     * @param reqList
     * @param user
     */
    Result batchSaveShipProductSaleStrategy(List<ShipProductSaleStrategyReq> reqList, TokenUser user);


    /**
     * 根据产品id查询产品加幅详情信息
     * @param productId
     * @return
     */
    List<ShipProductSaleStrategyDTO> queryByProductId(Long productId);


    /**
     * 根据渠道加幅日期查询产品加幅详情信息
     * @param queryDateReq
     * @return
     */
    List<ShipProductSaleStrategyDTO> queryByDate(ShipProductSaleStrategyQueryReq queryDateReq);

    /**
     * 设置产品为推荐
     * @param shipProductReq
     * @param user
     */
    Result setRecommend(ShipProductReq shipProductReq, TokenUser user);

    /**
     * 上架設置
     * @param localFunProductBatchSaleStrategyReq
     * @param currentUser
     * @return
     */
    Result putAway(ShipProductBatchSaleStrategyReq localFunProductBatchSaleStrategyReq, TokenUser currentUser);

    /**
     * 上架详情 用于编辑
     * @param shipProductEditReq
     * @return
     */
    Result<List<ShipProductSaleStrategyDTO2>> shipProductEditDetai(ShipProductEditReq shipProductEditReq);

    /**
     * 根据日期查询详情
     * @param shipProductReq2
     * @return
     */
    Result<ShipProductDetailDTO2> queryProductDetail(ShipProductReq2 shipProductReq2) throws ParseException;
}
